/*
* Copyright 2016 YONYOU Corporation Ltd. All Rights Reserved.
*
* This software is published under the terms of the YONYOU Software
* License version 1.0, a copy of which has been included with this
* distribution in the LICENSE.txt file.
*
* @Project         marketing

* @Package         com.yonyou.marketing.message.push.resolver

* @Author          LuZhen

* @FileName        MessageProtocol

* @Date            16/11/3

----------------------------------------------------------------------------------
*     Date          Who             Version         Comments
* 1. 16/11/3        LuZhen          1.0             Create Source
*
----------------------------------------------------------------------------------
*/
package org.marketing.common.entity.pushmessage;


import javax.validation.constraints.NotNull;

import org.marketing.common.constants.MessagePushConstant;

/**
 * 定义内部消息接口协议
 */
public class MessageProtocol {



    /**
     * 推送途经类型
     * 微信、app、短信、test
     */
    @NotNull
    private MessagePushConstant.PUSH_CHANNEL pushChannel;

    /**
     * 前台通知消息
     * 前台、后台通知至少存在一种
     */
    private MessageProtocolMessageContent message;

    /**
     * 后台通知消息
     * 前台、后台通知至少存在一种
     */
    private MessageProtocolNotificationContent notification;


    /**
     * 接收人对象
     */
    @NotNull
    private MessageProtocolReceiver receiver;


    /**
     * 发送人对象
     */
    @NotNull
    private MessageProtocolSender sender;

    public MessageProtocolHandleInfo getHandleInfo() {
        return handleInfo;
    }

    public void setHandleInfo(MessageProtocolHandleInfo handleInfo) {
        this.handleInfo = handleInfo;
    }

    /**
     * 历史处理信息
     */
    private MessageProtocolHandleInfo handleInfo;


    public MessagePushConstant.PUSH_CHANNEL getPushChannel() {
        return pushChannel;
    }

    public void setPushChannel(MessagePushConstant.PUSH_CHANNEL pushChannel) {
        this.pushChannel = pushChannel;
    }

    public MessageProtocolMessageContent getMessage() {
        return message;
    }

    public void setMessage(MessageProtocolMessageContent message) {
        this.message = message;
    }

    public MessageProtocolNotificationContent getNotification() {
        return notification;
    }

    public void setNotification(MessageProtocolNotificationContent notification) {
        this.notification = notification;
    }

    public MessageProtocolReceiver getReceiver() {
        return receiver;
    }

    public void setReceiver(MessageProtocolReceiver receiver) {
        this.receiver = receiver;
    }

    public MessageProtocolSender getSender() {
        return sender;
    }

    public void setSender(MessageProtocolSender sender) {
        this.sender = sender;
    }
}
